﻿using System;
using System.Windows.Forms;
using BadgeManager.Controller;
using BadgeManager.Model;

namespace Badge_Manager.View
{
    public partial class frmLogin : Form
    {
        ctrlUtente cUtente;

        public frmLogin(ctrlUtente cUtente)
        {
            InitializeComponent();
            this.cUtente = cUtente;
            GetCredenziali();
        }

        public Utente LeggiCredenziali()
        {
            Utente utenteRitorno = new Utente();
            utenteRitorno.NomeUtente = Properties.Settings.Default._LoginNomeUtente.ToString();
            utenteRitorno.Password = Properties.Settings.Default._LoginPassword.ToString();
            return utenteRitorno;
        }

        private void GetCredenziali()
        {
            Utente utente = new Utente();
            utente = LeggiCredenziali();

            if (utente.NomeUtente != "" && utente.Password != "")
                chkSalvaDati.Checked = true;

            txtUsername.Text = utente.NomeUtente.ToString();
            txtPassword.Text = utente.Password.ToString();
        }

        private void cmdAnnulla_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.No;
        }

        public void SalvaCredenziali(Utente Utente)
        {
            Properties.Settings.Default._LoginNomeUtente = Utente.NomeUtente.ToString();
            Properties.Settings.Default._LoginPassword = Utente.Password.ToString();

            Properties.Settings.Default.Save();
        }

        private void cmdAccedi_Click(object sender, EventArgs e)
        {
            if (txtUsername.Text.Trim() == "" && txtPassword.Text.Trim() == "")
            {
                MessageBox.Show("I campi sono obbligatori");
                return;
            }
            cUtente.NomeUtente = txtUsername.Text.ToString();
            cUtente.Password = txtPassword.Text.ToString();
            if (cUtente.LoginUtente(cUtente) != null)
            {
                //salva le credenziali se l'accesso riesce
                if (chkSalvaDati.Checked)
                    SalvaCredenziali(cUtente);

                this.Hide();
                this.DialogResult = DialogResult.OK;
                frmMain frm = new frmMain(cUtente);
                frm.ShowDialog();
            }
            else
            {
                RegistraAccessoErrato();
                MessageBox.Show("Nome utente e\\o password non validi");
            }
        }

        private void RegistraAccessoErrato()
        {
            AccessoErrato AccessoErrato = new AccessoErrato();
            AccessoErrato.NomeUtente = txtUsername.Text;
            AccessoErrato.Password = txtPassword.Text;
            AccessoErrato.Data = DateTime.Now.Date;
            AccessoErrato.Ora = DateTime.Now.TimeOfDay;

            new ctrlAccessiErrati().Nuovo(AccessoErrato);
        }

        private void frmLogin_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.DialogResult = DialogResult.No;
        }

        private void txtUsername_Enter(object sender, EventArgs e)
        {
        }
    }
}